#pragma once

#include <iostream>
#include <mutex>

namespace Yohifo
{
    // 懒汉模式
    class Signal
    {
    private:
        // 构造函数私有化
        Signal()
        {}

        // 删除拷贝构造
        Signal(const Signal&) = delete;

    public:
        static Signal *getInstance()
        {
            // 静态成员，只会初始化一次，并且生命周期随进程
            static Signal _sig;

            return &_sig;
        }

        void print()
        {
            std::cout << "Hello Signal!" << std::endl;
        }
    };
}